﻿//题目描述
//小明发现49 很有趣，首先，它是个平方数。它可以拆分为4 和9，拆分出来的部分也是平方数。
//169 也有这个性质，我们权且称它们为：拼接平方数。100 可拆分1, 00，这有点勉强，我们规定，
//0, 00, 000 等都不算平方数。
//小明想：还有哪些数字是这样的呢？
//你的任务出现了：找到某个区间的所有拼接平方数。
//输入格式
//两个正整数𝑎,𝑏(a < b < 10^6)。
//输出格式
//若干行，每行一个正整数。表示所有的区间[a, b] 中的拼接平方数，从小到大输出。
//输入
//169 10000
//输出
//169
//361
//1225
//1444
//1681
//3249
//4225
//4900
//9025
#include<bits/stdc++.h>
using namespace std;
bool c[1000009];
bool sqr(int x) {
	int y = sqrt(x);
	if (y * y == x&&x!=0)
		return true;
	else
		return false;
}

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int a, b; cin >> a >> b;
	for (int i = a; i <= b; i++)
		if (sqr(i))
			c[i] = 1;
	for (int i = a; i <= b; i++) {
		if (c[i]) {
			string s = to_string(i);
			for (int j = 1; j < s.length(); j++) {
				int x = stoi(s.substr(0, j));
				int y = stoi(s.substr(j));
				if (sqr(x) && sqr(y)) {
					cout << i << '\n';
					break;
				}
			}
		}
	}
	return 0;
}